package pkg

import (
	"fmt"
	"github.com/smartwalle/alipay/v3"
	"shopes/srv/appconfig"
)

type Pay interface {
	AliPay()
}

type AliPays struct {
	Appid      string
	privateKey string
	NotifyURL  string
	ReturnURL  string
}

func NewAliPay() *AliPays {
	return &AliPays{
		Appid:      appconfig.AppConfig.ALiPay.AppId,
		privateKey: appconfig.AppConfig.ALiPay.Key,
		NotifyURL:  "AlipayCallback",
		ReturnURL:  "https://q6.itc.cn/q_70/images03/20240319/5567d75589bd46439af8e835beeac44f.png",
	}
}
func (a *AliPays) Pay(Subject, OutTradeNo, Amount string) string {
	var privateKey = a.privateKey // 必须，上一步中使用 RSA签名验签工具 生成的私钥
	var client, err = alipay.New(a.Appid, privateKey, false)
	if err != nil {
		fmt.Println(err)
		return ""
	}
	var p = alipay.TradeWapPay{}
	p.NotifyURL = a.NotifyURL
	p.ReturnURL = a.ReturnURL
	p.Subject = Subject
	p.OutTradeNo = OutTradeNo
	p.TotalAmount = Amount
	p.ProductCode = "QUICK_WAP_WAY"

	url, err := client.TradeWapPay(p)
	if err != nil {
		fmt.Println(err)
	}

	// 这个 payURL 即是用于打开支付宝支付页面的 URL，可将输出的内容复制，到浏览器中访问该 URL 即可打开支付页面。
	var payURL = url.String()
	fmt.Println(payURL)
	return payURL
}
